#cmake版本要求
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

#元对象编译
# SET(CMAKE_AUTOMOC ON) #该方法还在实验中，所以还是用qt4_wrap_cpp比较好
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

#包含自己的module目录
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/modules)

#查找包qt4
FIND_PACKAGE(Qt4 REQUIRED)
FIND_PACKAGE(Qwt REQUIRED)
FIND_PACKAGE(OpenCV REQUIRED)

#设置编译环境，包含头文件，预处理并且用QT_LIBRARIES包含所有相关的库
INCLUDE(${QT_USE_FILE})

#非qt的源码
SET(main_src 
    ./src/main.cpp
    ./src/Serial.cpp
    ./src/serialdriver.cpp
    ./src/mainwindow.cpp
    ./src/maker_binocular.cpp
)
    
#包含所有的.ui文件
SET(uis
  ./ui/mainwindow.ui
)

IF(QT4_FOUND)
  MESSAGE("--- qt4 found")
ENDIF()

#把.ui文件生成为header，qt相关的源码
qt4_wrap_ui(ui_src 
  ${uis}
)

#所有包含了Q_OBJECT宏的头文件需要用wrap_cpp处理，源文件不需要
qt4_wrap_cpp(moc_src
  ./include/mainwindow.h
)

#设置所有的头文件
SET(SRC_FILES 
  ${main_src}
  ${ui_src}
  ${moc_src}
)

#包含头文件
INCLUDE_DIRECTORIES(
  ./ui
  ./include
  ${QWT_INCLUDE_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${OpenCV_INCLUDE_DIRS}
)

#生成可执行文件
ADD_EXECUTABLE(openimu ${SRC_FILES})

#设置所有的头文件
SET(LIBRARIES 
  ${QT_LIBRARIES}
  ${QWT_LIBRARY}
  ${OpenCV_LIBS}
)

#链接库文件
TARGET_LINK_LIBRARIES(openimu 
  ${LIBRARIES}
  -lusb-1.0
)

